package com.qf.drbackend.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtils {

    private static final String SECURITY_KEY = "qf666666";

    //token过期时间为2小时
    private static final long EXP_TIME = 1000 * 60 * 60 * 2;

    public static String createToken(Map claims,String uid){
        return Jwts.builder()
                //设置我们自定以的数据，格式是key-value，这部分内容是payload内容
                .setClaims(claims)
                //载荷信息
                .setSubject(uid)
                .setExpiration(new Date(System.currentTimeMillis() + EXP_TIME))

                //签名方式 SignatureAlgorithm.HS256 签名算法   SECURITY_KEY 签名密钥 （这两个信息必须绝对保密）
                .signWith(SignatureAlgorithm.HS256,SECURITY_KEY)
                .compact();
    }

    public static Claims parseBody(String jwtToken){
        return (Claims) Jwts.parser().setSigningKey(SECURITY_KEY)
                .parse(jwtToken).getBody();
    }

    public static String parseUid(String jwtToken){
        Claims claims = parseBody(jwtToken);

        return claims.getSubject();
    }

    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("username","zs");
        map.put("age",18);

        String token = JwtUtils.createToken(map, "1");

        System.out.println(token);
    }
}
